<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        //    数组去重  arr = [1,2,1,3,4,5,6,3,3,1,2];<br>
        // 把数组中重复的元素去掉 新生成数组 [1,2,3,4,5,6]<br>
        数组去重的几种不同的方法
    </div>
    <script>
        // 方法1   数组方法
        {
            let arr1 = [1,2,1,3,4,5,6,3,3,1,2] ; 
            let arr2 = [] ;
            for ( let i = 0 ; i < arr1.length ; i ++ ){//循环出数组的每一个元素
                if (arr2.indexOf(arr1[i]) == -1 ) {//判断这个元素在不在数组arr2中
                    arr2.push(arr1[i]); //不在的话往数组末尾添加新元素
                } 
            }
            console.log(arr2);
        }

        //方法2   对象方法      对象的键名不重复性
        {
            let arr = [1,2,1,3,4,5,6,3,3,1,2] ;
            let obj = {} ; 
            let arr1 = [] ;
            for ( let i = 0 ; i < arr.length ; i ++ ) {
                let key = arr[i] ;  //将数组中的元素赋值给键名
                obj[key] = arr[i] ; //将键值赋值给对应的键名，因为这是一个空的对象，所以都是往对象中添加键值对
            }                      //因为键名具有不重复性，在添加相同键名的键值对时，只会重复赋值
            for ( let a in obj ){   //在对象中循环
                arr1.push(parseInt(obj[a]));//取出键名对应的键值，将键值转化为数字类型，并添加到数组最后一个元素
            }
            console.log(arr1);
        }

        //方法3   集合方法  利用集合内元素不重复
        {
            let arr = [1,2,1,3,4,5,6,3,3,1,2] ;
            let set = new Set(arr);    //将数组转化为集合类型，集合具有自动去重
            console.log(Array.from(set));//集合是一种伪数组，再将集合转化为数组并打印
        }
    </script>
</body>
</html>